<<运算符问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:51:51
代码如下:
unsigned char high=1,low=1;
int m;
m=(high<<8)|low;
这样执行后m的值为多少呢?
我觉着应该这样执行high右移8位后变为0,与low相或后m的值应该等于low的值1,可运行过后其值为257,谁能告诉我这是为什么?
感激不尽!

m是int型的,它的范围比char型的大。如果是unsigned char 型的就是你想的结果。
书上有讲的,记不清原本是怎么讲的了。
比如说一个int型的和一个float型的相加,会先把int型的转换成float型的再加。大概的意思就是这样了

-_-! 这个是左移